using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Practices.Unity;

namespace UnityContrib.CanonicalObjectExtension
{
    /// <summary>
    ///  Interface for CanonicalObject
    /// </summary>
    public interface ICanonicalObject : IUnityContainerExtensionConfigurator
    {
        /// <summary>
        /// Configure default extension 
        /// </summary>
        void ConfigureDefaultExtension();

        ICanonicalObject RegisterPartialType<typeFrom,typeTo>(string canonicalName,string typeName, LifetimeManager lifetimeManager, params InjectionMember[] injectionMembers);
        ICanonicalObject RegisterPartialType<typeFrom, typeTo>(string canonicalName, string typeName, LifetimeManager lifetimeManager);
        ICanonicalObject RegisterPartialType<typeFrom, typeTo>(string canonicalName, string typeName);
        ICanonicalObject RegisterPartialType<typeFrom, typeTo>(string canonicalName);
        ICanonicalObject RegisterPartialType<typeTo>(string canonicalName, string typeName, LifetimeManager lifetimeManager, params InjectionMember[] injectionMembers);
        ICanonicalObject RegisterPartialType<typeTo>(string canonicalName);
    }
}
